#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SLNDataType;

typedef struct SListNode
{
	SLNDataType val;
	struct SListNode* next;
}SLNode;

void SLNPrint(SLNode* phead);

void SLNPushBack(SLNode** pphead, SLNDataType val);
void SLNPopBack(SLNode** pphead);

void SLNPushFront(SLNode** pphead, SLNDataType val);
void SLNPopFront(SLNode** pphead);


SLNode* SLNFind(SLNode* phead, SLNDataType val);

void SLNInsert(SLNode** pphead, SLNode* pos, SLNDataType val);
void SLNErase(SLNode** pphead, SLNode* pos);

void SLNInsertAfter(SLNode* pos, SLNDataType val);
void SLNEraseAfter(SLNode* pos);